import {ResultType} from '../types'

/**
 * 生成响应结果对象
 *
 * @param options 配置选项
 * - status 响应状态，默认值 true，true 表示成功；false 表示失败
 * - message 响应描述信息，默认值 ''
 * - data 响应数据，默认值 null
 * @returns {ResultType} 响应结果对象
 */
export const genResult = (
  options: {
    status?: boolean
    message?: string
    data?: any
  } = {}
): ResultType => {
  const {status, message, data} = {
    status: true,
    message: '',
    data: null,
    ...options
  }
  return {
    status,
    message,
    data
  }
}

export type GenResultType = typeof genResult

/**
 * 生成成功响应结果对象
 *
 * @param {string} message 响应描述信息，默认值 '成功'
 * @param data 响应数据，默认值 null
 * @returns {ResultType} 成功响应结果对象
 */
export const genSuccessResult = (message: string = '成功', data: any = null): ResultType => {
  return genResult({status: true, message, data})
}

export type GenSuccessResultType = typeof genSuccessResult

/**
 * 生成失败响应结果对象
 *
 * @param {string} message 响应描述信息，默认值 '失败'
 * @param data 响应数据，默认值 null
 * @returns {ResultType} 失败响应结果对象
 */
export const genFailResult = (message: string = '失败', data: any = null): ResultType => {
  return genResult({status: false, message, data})
}

export type GenFailResultType = typeof genFailResult
